 package respaldo;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author Jesús Vásquez
 */
public class Respaldo {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ServerSocket servicio;
        Socket socketServicio = null;
        String llego ;
        String Respuesta;
        String path;
        byte[] buffer;
        int len;
        while (1 == 1){
        try {
            System.out.println("Esperando petición del cliente");
            servicio = new ServerSocket(9999);
            socketServicio = null;        
            socketServicio = servicio.accept();
                
                PrintWriter salida = new PrintWriter(socketServicio.getOutputStream(), true);
                BufferedReader entrada = new BufferedReader(new InputStreamReader(socketServicio.getInputStream()));
                llego = entrada.readLine();
                Respuesta = XmlParser.extraerContenido(llego); 
                if (Respuesta.equals("Actualizar")){
                    salida.println("Ok");
                    path = System.getProperty("user.dir") + "/archivo/ArchivoRespaldo.xml";
                    PrintStream envio = new PrintStream(socketServicio.getOutputStream());
                    FileInputStream origen = new FileInputStream(path);
                    buffer = new byte[1024];
                    while (1 == 1) {
                        len = origen.read(buffer);
                        //llego = entrada.readLine();
                        if (len <= 0) {
                            envio.close();
                            System.out.println("se mando completo");
                            break;
                        } else {
                            envio.write(buffer, 0, len);
                        }
                    }
                }
                if(Respuesta.equals("Guardar")){
                    salida.println("Ok");
                    System.out.println("Guardando...");
                    InputStream llegada = socketServicio.getInputStream();
                    path = System.getProperty("user.dir") + "/archivo/ArchivoRespaldo.xml";
                    FileOutputStream destino = new FileOutputStream(path);
                    buffer = new byte[1024];
                    while (1 == 1) {
                        len = llegada.read(buffer);
                        if (len <= 0) {
                            break;
                        } else {
                            destino.write(buffer, 0, len);
                    }
                    }
                }
                
                servicio.close();
            } catch (IOException ex) {
                System.out.println("Se cayó");
                System.out.println(ex.getMessage());
            }
        }
    }
 }

